home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / Caml Light 0.7 / examples / compress / decompr.ml < prev    next >
Text File  |  1995-06-01  |  1KB  |  45 lines

  1. exception Mauvais_suffixe;;
  2.  
  3. let enlève_suffixe_cpr chaîne =
  4.   let longueur = string_length chaîne in
  5.   if longueur < 4 or sub_string chaîne (longueur - 4) 4 <> ".cpr"
  6.   then raise Mauvais_suffixe
  7.   else sub_string chaîne 0 (longueur - 4);;
  8. #open "sys";;
  9. exception Erreur;;
  10. let erreur = ref false;;
  11. for i = 1 to vect_length command_line - 1 do
  12.   let (nom_entrée, nom_sortie) =
  13.     try
  14.       (command_line.(i), enlève_suffixe_cpr command_line.(i))
  15.     with Mauvais_suffixe ->
  16.       (command_line.(i) ^ ".cpr", command_line.(i)) in
  17.   try
  18.     let entrée =
  19.       try
  20.         open_in_bin nom_entrée
  21.       with Sys_error message ->
  22.         prerr_endline
  23.           ("Erreur à l'ouverture de " ^ nom_entrée ^ " : " ^ message);
  24.         raise Erreur in
  25.     let sortie =
  26.       try
  27.         open_out_bin nom_sortie
  28.       with Sys_error message ->
  29.         close_in entrée;
  30.         prerr_endline
  31.           ("Erreur à la création de " ^ nom_sortie ^ " : " ^ message);
  32.         raise Erreur in
  33.     try
  34.       huffman__décompresse entrée sortie;
  35.       close_in entrée; close_out sortie; remove nom_entrée
  36.     with Sys_error message ->
  37.       close_in entrée; close_out sortie; remove nom_sortie;
  38.       prerr_endline
  39.         ("Erreur pendant la compression de " ^ nom_entrée ^ " : " ^ message);
  40.       raise Erreur
  41.   with Erreur ->
  42.     erreur := true
  43. done;
  44. exit (if !erreur then 2 else 0);;
  45.